package com.abcdefg.java_chatroom.api;

import com.abcdefg.java_chatroom.mapper.MessageMapper;
import com.abcdefg.java_chatroom.mapper.MessageSessionMapper;
import com.abcdefg.java_chatroom.model.Friend;
import com.abcdefg.java_chatroom.model.MessageSession;
import com.abcdefg.java_chatroom.model.MessageSessionUser;
import com.abcdefg.java_chatroom.model.User;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.SessionAttribute;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

@RestController
@RequestMapping("/MessageSessionApi")
public class MessageSessionApi {
    @Autowired
    private MessageSessionMapper messageSessionMapper;

    @Autowired
    private MessageMapper messageMapper;


    @RequestMapping("/sessionList")
    public Object messageSessionApi(HttpServletRequest request) {
        List<MessageSession> messageSessionList=new ArrayList<>();
        HttpSession session = request.getSession();
        if(session == null){
            System.out.println("当前获取不到session对象！！！");
            return messageSessionList;
        }
        User user = (User)session.getAttribute("user");
        if(user == null){
            System.out.println("当前获取不到user对象");
            return messageSessionList;
        }
        List<Integer> sessionIdByList =
                messageSessionMapper.getSessionIdByUserId(user.getUserId());
        for(Integer sessionId : sessionIdByList){
            MessageSession messageSession=new MessageSession();
            messageSession.setSessionId(sessionId);
            List<Friend> friendsByList =
                    messageSessionMapper.getFriendsBySessionId(sessionId, user.getUserId());
            messageSession.setFriends(friendsByList);
            String message= messageMapper.getLastMessageBySessionId(sessionId);
            //判断一下看获取的最后一条消息是否为null
            if(message != null){
                messageSession.setLastMessage(message);
            }else{
                messageSession.setLastMessage(" ");
            }
            messageSessionList.add(messageSession);
        }
        return messageSessionList;
    }

    @RequestMapping("/session")
    @Transactional
    public Object addMessageSession(int toUserId, @SessionAttribute("user")User user) {
        HashMap<String,Integer> map=new HashMap<>();
        MessageSession messageSession=new MessageSession();
        messageSessionMapper.addMessageSession(messageSession);
        MessageSessionUser messageSessionUser1=new MessageSessionUser();
        messageSessionUser1.setSessionId(messageSession.getSessionId());
        messageSessionUser1.setUserId(user.getUserId());
        messageSessionMapper.addMessageSessionUser(messageSessionUser1);
        MessageSessionUser messageSessionUser2=new MessageSessionUser();
        messageSessionUser2.setSessionId(messageSession.getSessionId());
        messageSessionUser2.setUserId(toUserId);
        messageSessionMapper.addMessageSessionUser(messageSessionUser2);
        map.put("sessionId",messageSession.getSessionId());
        return map;
    }
}
